<?php

header('Content-type:text/html;charset=utf-8');


/*
	class Computer{
		public $name = '联想';
	}


	//引用传递
	$Computer1 = new Computer();
	$Computer2 = $Computer1;    
	//这个时候Computer2和Computer1指向同一个地址，不管改变其中的谁的值，另一个都会跟着改变，最后两个结果是一样的

	echo $Computer1->name;
	echo $Computer2->name;



	class Computer{
		public $name = '联想';
	}

	//独立实例
	$Computer1 = new Computer();
	$Computer2 = new Computer();
	//这个时候$Computer1，$Computer2是两个独立的对象，
	//改变其中一个的值，另外一个保持不变，互不影响
	echo $Computer1->name;
	echo $Computer2->name = 'dell';

*/


//克隆  __clone()调整对象的克隆行为
//当一个对象被克隆时，会自动执行__clone()方法，而复制的对象的方法可以在其方法体内进行调整
class Computer{
	public $name = 'blue';

	//当执行$Computer2 = clone $Computer1这个clone行为时，会自动执行__clone()方法
	public function __clone(){
		echo 'clone success';
		//在这里可以重新设置克隆后对象的值
		//用$this调用，这里$this指代$Computer2(克隆后的对象)，而不是$Computer1(被克隆的对着)
		$this->name = 'dell';
	}
}

$Computer1 = new Computer();
$Computer2 = clone $Computer1;  //克隆就是首先把一个对象的地址完全复制一份
// echo $Computer2->name = 'blue123';  //然后我再做其他操作，就跟被克隆的对象毫不相关
echo $Computer2->name;
